#include <iostream>
#include <vector>
using namespace std;
int main()
{
    std::vector<int> vec;
    const std::vector<int>::iterator iter = vec.begin();
    *iter = 10;
    ++iter;
    // iter acts like a T* const
    // OK, changes what iter points to // error! iter is const
    std::vector<int>::const_iterator cIter = // cIter acts like a const T* vec.begin();
    *cIter = 10;
    ++cIter;
    // error! *cIter is const
    // fine, changes cIter
}